Skip to content

guide: document standalone OpenVMM releases#3988

Draft
benhillis wants to merge 15 commits into
microsoft:mainfrom
benhillis:user/benhill/openvmm-tag-release-guide
Draft

guide: document standalone OpenVMM releases#3988
benhillis wants to merge 15 commits into
microsoft:mainfrom
benhillis:user/benhill/openvmm-tag-release-guide

Conversation

@benhillis

@benhillis benhillis commented Jul 21, 2026

Copy link
Copy Markdown
Member

Summary

Document the standalone pre-1.0 OpenVMM release and support model.

  • immutable openvmm-vMAJOR.MINOR.PATCH tags are the public version authority
  • normal releases are approximately monthly but quality-gated and sequential
  • only the newest release is supported initially
  • patch branches are created on demand, with fixes landing in main first
  • publication is automatic after builds, checksums, and attestations succeed
  • source consumers use a real tag checkout or the official attested source archive
  • GitHub automatic source archives are not version-preserving build inputs
  • Windows release assets are explicitly unsigned initially

The guide includes normal-release and patch-release maintainer runbooks plus source-consumer verification guidance. Planned artifacts and automation are explicitly marked as under development until the draft implementation lands.

Draft implementation stack: #3989 and benhillis#5, #6, and #7.

Ben Hillis added 2 commits July 20, 2026 17:42
Separate OpenVMM rolling releases from OpenHCL servicing and document the hybrid development-train, exact-tag, post-release bump, nightly, provenance, and support model.

Copilot-Session: 13086ab2-fa94-4be1-b276-ee1b96e7caea
Define the latest-only pre-1.0 support policy and maintainer runbooks for normal and patch releases. Document tag-based source identity, official attested source archives, immutable publication, and the initial unsigned Windows artifact policy.

Copilot-Session: 13086ab2-fa94-4be1-b276-ee1b96e7caea
Copilot AI review requested due to automatic review settings July 21, 2026 00:43
@benhillis
benhillis requested a review from a team as a code owner July 21, 2026 00:43
@github-actions github-actions Bot added the Guide label Jul 21, 2026
Distinguish clean release-tag output from the explicit +dirty identity used for modified tagged checkouts.

Copilot-Session: 13086ab2-fa94-4be1-b276-ee1b96e7caea

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Guide documentation for a standalone OpenVMM (pre-1.0) release/support model, splitting it from the existing OpenHCL release-branch process and updating related Guide navigation/reference content.

Changes:

  • Adds a new Guide page describing OpenVMM release cadence, tag semantics, and maintainer runbooks.
  • Re-scopes the existing release management page to OpenHCL and cross-links between OpenVMM/OpenHCL release guidance.
  • Updates the CLI reference and Guide SUMMARY to reflect the new documentation structure.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

File Description
Guide/src/SUMMARY.md Splits the previous combined “Releases” entry into distinct OpenVMM vs OpenHCL pages.
Guide/src/reference/openvmm/management/cli.md Documents --version/-V behavior in the CLI reference.
Guide/src/dev_guide/contrib/release.md Renames/reframes the page as OpenHCL release management and adds cross-links/admonitions.
Guide/src/dev_guide/contrib/openvmm_release.md New OpenVMM standalone release model/support policy + normal/patch runbooks.

Comment thread Guide/src/dev_guide/contrib/release.md Outdated
Comment thread Guide/src/reference/openvmm/management/cli.md Outdated
Comment thread Guide/src/dev_guide/contrib/openvmm_release.md Outdated
Copilot AI review requested due to automatic review settings July 21, 2026 00:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

Guide/src/dev_guide/contrib/release.md:19

  • The opening sentence is duplicated, which reads like a copy/paste error and makes the paragraph awkward.
Occasionally, the OpenHCL project will declare upcoming release milestones. We
Occasionally, the OpenHCL project will declare upcoming release milestones. We

Guide/src/reference/openvmm/management/cli.md:13

  • This --version bullet claims a tag/dirty/revision-based version format, but the current CLI uses clap’s built-in --version output (derived from the Cargo package version), which is typically 0.0.0 for in-repo builds. Either update the implementation or keep the docs generic so they stay accurate.
* `--version`, `-V`: Prints the concise OpenVMM source identity and exits. A
  clean exact release tag reports `MAJOR.MINOR.PATCH`, a dirty tagged checkout
  adds `+dirty`, and an untagged checkout reports a development version
  containing the source revision.

@benhillis
benhillis marked this pull request as draft July 21, 2026 01:07
Copilot-Session: 13086ab2-fa94-4be1-b276-ee1b96e7caea
Copilot AI review requested due to automatic review settings July 21, 2026 03:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

Guide/src/reference/openvmm/management/cli.md:13

  • The --version / -V description doesn't match the current implementation: Options is derived with clap::Parser and parsed via Options::parse, so clap will print the Cargo package version (it won't include git tag / dirty state / revision metadata as described here). This doc should reflect the actual output, or be softened to avoid specifying git/tag semantics that aren't implemented.
* `--version`, `-V`: Prints the concise OpenVMM source identity and exits. A
  clean exact release tag reports `MAJOR.MINOR.PATCH`, a dirty tagged checkout
  adds `+dirty`, and an untagged checkout reports a development version
  containing the source revision.

Comment thread Guide/src/dev_guide/contrib/release.md Outdated
Comment thread Guide/src/dev_guide/contrib/openvmm_release.md
Remove internal process wording, document only the retained source revision metadata, and mark the tag-triggered automation as under development until the implementation stack lands.

Copilot-Session: 13086ab2-fa94-4be1-b276-ee1b96e7caea
Copilot AI review requested due to automatic review settings July 21, 2026 04:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (3)

Guide/src/reference/openvmm/management/cli.md:13

  • The --version description currently claims tag-derived OpenVMM source identity output, but the openvmm CLI is clap-derived and (as of current code) reports the Cargo package version rather than a Git tag/revision-derived OpenVMM product version. This makes the CLI reference misleading until the versioning work lands.
* `--version`, `-V`: Prints the concise OpenVMM source identity and exits. A
  clean exact release tag reports `MAJOR.MINOR.PATCH`, a dirty tagged checkout
  adds `+dirty`, and an untagged checkout reports a development version
  containing the source revision.

Guide/src/dev_guide/contrib/openvmm_release.md:85

  • This section describes tag-derived build identity as current behavior, but there doesn’t appear to be an implementation in-tree yet (e.g., no openvmm-v* tag parsing logic, and other code still uses env!("CARGO_PKG_VERSION")). Please mark this as the intended model (or date-qualify it) so readers don’t assume it already reflects openvmm --version today.
OpenVMM resolves its displayed version from source identity:

Guide/src/dev_guide/contrib/openvmm_release.md:98

  • This states that openvmm --version prints the tag-derived identity, but current code appears to still rely on Cargo package versioning (e.g., env!("CARGO_PKG_VERSION") in the snapshot manifest). Until the tag-derived identity is implemented, this should be phrased as future/intended behavior (or explicitly note the current behavior).
`openvmm --version` prints the concise displayed version. The full source
revision remains available as separate embedded build information.

Comment thread Guide/src/dev_guide/contrib/openvmm_release.md Outdated
Comment thread Guide/src/SUMMARY.md Outdated
Describe the source archive as behavior provided once the draft automation lands and align the OpenHCL navigation title with its page heading.

Copilot-Session: 13086ab2-fa94-4be1-b276-ee1b96e7caea
Copilot AI review requested due to automatic review settings July 21, 2026 05:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

Guide/src/reference/openvmm/management/cli.md:13

  • The --version behavior described here (tag-derived version, +dirty, and Git revision) doesn’t match the current CLI implementation. openvmm_entry::cli_args::parse_options() calls Options::parse without overriding clap’s version string, so --version comes from Cargo package metadata (see openvmm/openvmm_entry/src/cli_args.rs:40-66).
* `--version`, `-V`: Prints the concise OpenVMM source identity and exits. A
  clean exact release tag reports `MAJOR.MINOR.PATCH`, a dirty tagged checkout
  adds `+dirty`, and an untagged checkout reports a development version
  containing the source revision.

Guide/src/dev_guide/contrib/openvmm_release.md:101

  • This section describes openvmm --version printing a tag/Git-derived “displayed version”, but the current code uses Cargo package metadata for versioning (e.g., env!("CARGO_PKG_VERSION") is recorded into snapshot manifests in openvmm/openvmm_entry/src/vm_controller.rs:477). Unless the implementation has landed elsewhere, this should be phrased as planned/future behavior to avoid misleading readers.
`openvmm --version` prints the concise displayed version. The full source
revision remains available as separate embedded build information.

A source tree with neither Git metadata nor generated release metadata warns
that `0.0.0-dev` is not an official release identity.

Comment thread Guide/src/dev_guide/contrib/openvmm_release.md Outdated
Comment thread Guide/src/dev_guide/contrib/openvmm_release.md
Comment thread Guide/src/dev_guide/contrib/openvmm_release.md
Comment thread Guide/src/dev_guide/contrib/openvmm_release.md Outdated
Comment thread Guide/src/dev_guide/contrib/openvmm_release.md

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

Guide/src/reference/openvmm/management/cli.md:13

  • The --version description doesn't match current behavior: openvmm_entry::Options is a plain #[derive(Parser)] without a custom version string, so Clap's built-in --version/-V prints the Cargo package version rather than a tag/dirty/source-revision identity. Either document the current output or clearly mark the tag-derived/source-identity output as under development (and link to the release-model page).
* `--version`, `-V`: Prints the concise OpenVMM source identity and exits. A
  clean exact release tag reports `MAJOR.MINOR.PATCH`, a dirty tagged checkout
  adds `+dirty`, and an untagged checkout reports a development version
  containing the source revision.

Guide/src/dev_guide/contrib/openvmm_release.md:90

  • This section documents a specific source-identity/version-string scheme (0.0.0-dev+g..., +dirty, build failure on multiple tags), but that behavior does not appear to be implemented in the current tree (and openvmm_entry does not override Clap's default --version). To avoid the Guide becoming incorrect, mark this build-identity behavior as under development (similar to the later runbook note) or reword it as a proposed/target model.
## Build identity

OpenVMM resolves its displayed version from source identity:

Scope the Build identity section and the CLI --version reference as the intended (not yet implemented) model, since openvmm --version currently reports the Cargo package version. Addresses recurring review feedback.
Copilot AI review requested due to automatic review settings July 23, 2026 04:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

Guide/src/dev_guide/contrib/openvmm_release.md:160

  • "SHA256SUMS covers all nine archives" is a bit ambiguous when the list above includes 10 items (the nine archives plus SHA256SUMS). Consider wording that explicitly states SHA256SUMS contains checksums for the nine archives listed above.
`SHA256SUMS` covers all nine archives. Every archive and `SHA256SUMS` receives a
public GitHub build provenance attestation before the release is published.

Comment thread Guide/src/dev_guide/contrib/openvmm_release.md Outdated
Distinguish the nine release archives from the SHA256SUMS checksum file in the release assets intro.
Copilot AI review requested due to automatic review settings July 23, 2026 18:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comment thread Guide/src/dev_guide/contrib/openvmm_release.md
…e doc

- Show the cargo build command in 'Building a release from source' and link
  to the Building OpenVMM page for prerequisites and options.
- Add a 'Reporting security issues' section pointing to SECURITY.md/MSRC.
Copilot AI review requested due to automatic review settings July 24, 2026 16:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

Guide/src/dev_guide/contrib/release.md:23

  • Prose line wrapping: this paragraph exceeds the style guide’s ~80-character wrap guideline for prose lines, which makes diffs harder to review (tables/code are exempt, but this is normal prose). Rewrap the paragraph to keep lines around 80 chars.
We stabilize the code base in a `release/<MAJOR>.<MINOR>.<YYMM>` branch, typically
named for the YYMM when the branch was forked. Future references to the release
number will be shortened to `<RELEASE>` in this doc. We expect a high quality
bar for all code that goes into the repository's main branch, and we ask
developers to hold these release branches to the highest quality standards. The

Clarify that pre-1.0 OpenVMM rolls forward from main (fixes, including
security, ship in the next release, cut early when urgent) and that the
patch-version scheme and Patch release runbook describe a post-1.0
release-branch servicing model. Keeps all sections; adds post-1.0
admonitions and cross-links.
Copilot AI review requested due to automatic review settings July 24, 2026 16:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

Guide/src/dev_guide/contrib/release.md:21

  • This paragraph contains a very long prose line (not a table/code block). The Guide style guide asks to wrap prose at ~80 characters to keep diffs readable (Guide/src/dev_guide/contrib/style_guide.md). Consider wrapping the first sentence here.
Occasionally, the OpenHCL project will declare upcoming release milestones.
We stabilize the code base in a `release/<MAJOR>.<MINOR>.<YYMM>` branch, typically
named for the YYMM when the branch was forked. Future references to the release
number will be shortened to `<RELEASE>` in this doc. We expect a high quality

Comment on lines +356 to +357
A confirmed security issue in the currently supported OpenVMM release ships as a
patch following the patch release runbook above.
Add a downstream-packaging page covering how to build the `openvmm`
gnu binary from the public source release, independent of the in-repo
`.packages/` provisioning flow.

The page records the empirically validated requirements: the native
build dependencies (gcc, glibc-devel, kernel-headers, openssl-devel,
a protobuf compiler), the two required environment overrides (PROTOC
and OPENSSL_NO_VENDOR), the offline `cargo vendor` build model, and
the runtime shared-library set. It clarifies that the gnu build uses
the OpenSSL crypto backend and does not link SymCrypt (musl-only), and
notes the workspace MSRV caveat. Includes a worked Azure Linux RPM
example (BuildRequires/Requires and %build/%install) modeled on the
cloud-hypervisor package, and links it from SUMMARY.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: a7c0a618-7851-4fa6-9755-24402ff573e0
Copilot AI review requested due to automatic review settings July 24, 2026 18:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (3)

Guide/src/dev_guide/contrib/openvmm_release.md:51

  • This section sits immediately after an admonition stating patch releases are post-1.0 and "not produced yet", but the heading here reads as if patch releases are part of the current (pre-1.0) model. Tweaking the wording to explicitly scope patch releases to post-1.0 will avoid confusing readers about whether patch releases exist today.
Patch releases advance the patch version:

Guide/src/dev_guide/contrib/openvmm_release.md:62

  • This paragraph describes patch-release behavioral guarantees immediately after stating that patch releases are not produced pre-1.0. As written it implies patch releases exist before 1.0. Consider explicitly scoping the patch-release guarantee to post-1.0 to keep the policy consistent within this section.
Before `1.0`, normal minor releases may make breaking changes to APIs,
command-line behavior, device models, snapshot formats, and other interfaces.
Breaking changes should be intentional and documented in the release notes,
with migration guidance when practical. Patch releases correct the currently
supported minor line and should not intentionally introduce breaking changes.

Guide/src/dev_guide/contrib/openvmm_release.md:153

  • The text says "nine archives plus a separate SHA256SUMS" but the list that follows includes SHA256SUMS as an item. Minor wording tweak can make the list and sentence align more directly.
The initial release contains nine archives plus a separate `SHA256SUMS`
checksum file:

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: a7c0a618-7851-4fa6-9755-24402ff573e0
Copilot AI review requested due to automatic review settings July 24, 2026 18:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.

@@ -1,16 +1,33 @@
# Release Management
# OpenHCL Release Management

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: rename file to openhcl_release?

Comment on lines +61 to +62
with migration guidance when practical. Patch releases correct the currently
supported minor line and should not intentionally introduce breaking changes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe "unless absolutely necessary"? I could envision a scenario where some sort of breaking change is needed to fix an urgent security bug. Unlikely, but not impossible.

Comment on lines +174 to +175
The public release workflow does not Authenticode-sign Windows artifacts. Do
not describe downloaded Windows executables as signed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this a command to the AI that slipped through?

Comment on lines +342 to +343
For OpenHCL, maintainers cherry-pick a fix to each live OpenHCL release branch
that requires it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why mention OpenHCL in the OpenVMM file?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants